package utils

import (
	"fmt"

	"gitee.com/kessil/chicory/internal/config"
	"go.uber.org/zap"
)

// 日志级别常量
const (
	LevelDebug = "debug"
	LevelInfo  = "info"
	LevelWarn  = "warn"
	LevelError = "error"
)

// Logger 提供便捷的日志方法
var Logger *zap.Logger

// InitLogger 初始化日志工具
func InitLogger() {
	Logger = config.GetLogger()
}

func Printf(msg interface{}, fields ...zap.Field) {
	Debug(fmt.Sprintf("%v", msg), fields...)
}

// Debug 调试日志
func Debug(msg string, fields ...zap.Field) {
	Logger.Debug(msg, fields...)
}

// Info 信息日志
func Info(msg string, fields ...zap.Field) {
	Logger.Info(msg, fields...)
}

// Warn 警告日志
func Warn(msg string, fields ...zap.Field) {
	Logger.Warn(msg, fields...)
}

// Error 错误日志
func Error(msg string, fields ...zap.Field) {
	Logger.Error(msg, fields...)
}

// Fatal 致命错误日志
func Fatal(msg string, fields ...zap.Field) {
	Logger.Fatal(msg, fields...)
}

// With 添加字段到日志
func With(fields ...zap.Field) *zap.Logger {
	return Logger.With(fields...)
}

// Sync 刷新日志缓冲区
func Sync() error {
	return Logger.Sync()
}
